home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 4: Demo 1 / almathera_demo1.bin / amos / icon utility.amos / icon utility.amosSourceCode < prev    next >
AMOS Source Code  |  1995-03-16  |  8KB  |  344 lines

  1. ' Program to grab icons, sprites, and bobs from IFF file on disk.  
  2. ' Version 1.01, D.E. Lewis.
  3. ' Release date 11 March 1991.  
  4. '
  5. '
  6. ' Declare global variables 
  7. Global ICON_START_X,ICON_START_Y,ICON_END_X,ICON_END_Y
  8. Global ICON_NUMBER,ICON_EDIT
  9. Global _SPRITE_NUMBER,_SPRITE_EDIT
  10. Global FILE_LOADED
  11. Global _SCREEN
  12. '
  13. ' Initialise global variables
  14. ICON_START_X=-1
  15. ICON_START_Y=-1
  16. ICON_END_X=-1
  17. ICON_END_Y=-1
  18. ICON_NUMBER=0 : ICON_EDIT=1
  19. _SPRITE_NUMBER=0 : _SPRITE_EDIT=1
  20. FILE_LOADED=False
  21. _SCREEN=0
  22. '
  23. ' Initialise sprite and icon banks.
  24. Erase 1
  25. Erase 2
  26. '
  27. Auto View Off 
  28. ' Setup help screens.  
  29. Unpack 6 To 3
  30. Unpack 7 To 4
  31. '
  32. ' Setup menu screen  
  33. Unpack 5 To 0
  34. Reserve Zone 20
  35. '
  36. ' Load IFF file  
  37. Set Zone 1,31,79 To 160,95
  38. '
  39. ' Erase icon bank  
  40. Set Zone 2,31,99 To 160,115
  41. '
  42. ' Load icon bank   
  43. Set Zone 3,31,119 To 160,135
  44. '
  45. ' Save icon bank   
  46. Set Zone 4,31,139 To 160,155
  47. '
  48. ' Grab icon  
  49. Set Zone 5,31,159 To 160,175
  50. '
  51. ' Icon number increment  
  52. Set Zone 6,31,179 To 44,191
  53. '
  54. ' Icon number decrement  
  55. Set Zone 7,31,194 To 44,206
  56. '
  57. Ink 1,0 : Text 52,193,"001"
  58. Ink 1,0 : Text 83,199,"000"
  59. '
  60. ' Help 
  61. Set Zone 8,166,79 To 209,95
  62. '
  63. ' Quit 
  64. Set Zone 9,215,79 To 258,95
  65. '
  66. ' Erase sprite bank  
  67. Set Zone 10,166,99 To 314,115
  68. '
  69. ' Load sprite bank 
  70. Set Zone 11,166,119 To 314,135
  71. '
  72. ' Save sprite bank 
  73. Set Zone 12,166,139 To 314,155
  74. '
  75. ' Grab sprite  
  76. Set Zone 13,166,159 To 314,175
  77. '
  78. ' Sprite number increment  
  79. Set Zone 14,166,179 To 179,191
  80. '
  81. ' Sprite number decrement  
  82. Set Zone 15,166,194 To 179,206
  83. '
  84. Ink 1,0 : Text 187,193,"001"
  85. Ink 1,0 : Text 218,199,"000"
  86. ' End of menu screen setup.
  87. '
  88. Auto View On 
  89. View 
  90. '
  91. '
  92. Do 
  93.    K=Mouse Click
  94.    If K=1 Then Proc OPTION
  95.    If K=2 Then Proc SWITCH_SCREEN
  96. Loop 
  97. '
  98. Procedure SWITCH_SCREEN
  99.    If FILE_LOADED
  100.       If _SCREEN=0
  101.          _SCREEN=2
  102. Change Mouse 2
  103.          Screen To Front 2 : Screen 2
  104.       Else 
  105.          _SCREEN=0
  106. Change Mouse 1
  107.          Screen To Front 0 : Screen 0
  108.       End If 
  109.    End If 
  110. End Proc
  111. '
  112. Procedure OPTION
  113.    If _SCREEN=0
  114.       Proc MENU
  115.    Else 
  116.       Proc SELECT_ICON
  117.    End If 
  118. End Proc
  119. '
  120. ' Define icon, sprite, and bob selection procedure.
  121. Procedure SELECT_ICON
  122.    If FILE_LOADED
  123.       If ICON_START_X<>-1
  124.          Screen Copy 1 To 2 : Rem restore screen 
  125.       End If 
  126.       ICON_START_X=X Screen(X Mouse)
  127.       ICON_START_Y=Y Screen(Y Mouse)
  128.       ICON_END_X=ICON_START_X
  129.       ICON_END_Y=ICON_START_Y
  130.       Repeat 
  131.          MOUSE_X=X Screen(X Mouse)
  132.          MOUSE_Y=Y Screen(Y Mouse)
  133.          If(MOUSE_X<>ICON_END_X) or(MOUSE_Y<>ICON_END_Y)
  134.             Screen Copy 1 To 2 : Rem restore screen 
  135.             ICON_END_X=MOUSE_X
  136.             ICON_END_Y=MOUSE_Y
  137.             Ink 1 : Box ICON_START_X,ICON_START_Y To ICON_END_X,ICON_END_Y
  138.          End If 
  139.       Until(Mouse Key and %1)=0
  140.    End If 
  141. End Proc
  142. '
  143. Procedure MENU
  144.    Z=Mouse Zone
  145.    If Z<>0
  146.       On Z Proc FILE_LOAD,ICON_BANK_ERASE,ICON_BANK_LOAD,ICON_BANK_SAVE,ICON_GRAB,ICON_EDIT_INC,ICON_EDIT_DEC,HELP,QUIT,_SPRITE_BANK_ERASE,_SPRITE_BANK_LOAD,_SPRITE_BANK_SAVE,_SPRITE_GRAB,_SPRITE_EDIT_INC,_SPRITE_EDIT_DEC
  147.    End If 
  148. End Proc
  149. '
  150. '
  151. Procedure FILE_LOAD
  152.    F$=Fsel$("*.iff","","Icon grab","Select IFF file")
  153.    If F$<>""
  154.       Load Iff F$,1
  155.       Load Iff F$,2 : Rem Make working copy. Screen Copy would be more elegant 
  156.       '                   but we don't know the screen mode. 
  157.       '
  158.       FILE_LOADED=True
  159.       Screen To Front 0 : Screen 0
  160.    End If 
  161. End Proc
  162. '
  163. Procedure ICON_BANK_ERASE
  164.    Erase 2
  165.    ICON_NUMBER=0
  166.    ICON_EDIT=1
  167.    Ink 1,0 : Text 52,193,"001"
  168.    Ink 1,0 : Text 83,199,"000"
  169. End Proc
  170. '
  171. Procedure ICON_BANK_LOAD
  172.    F$=Fsel$("*.abk","","Load icon bank","Select ABK file")
  173.    If F$<>""
  174.       Load F$,2
  175.       ICON_NUMBER=Length(2) : Rem Get number of icons in bank. 
  176.       ICON_EDIT=ICON_NUMBER+1
  177.       T$=Str$(ICON_EDIT)
  178.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  179.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  180.       Ink 1,0 : Text 52,193,T$
  181.       T$=Str$(ICON_NUMBER)
  182.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  183.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  184.       Ink 1,0 : Text 83,199,T$
  185.    End If 
  186. End Proc
  187. '
  188. Procedure ICON_BANK_SAVE
  189.    If ICON_NUMBER>0
  190.       F$=Fsel$("*.abk","","Save icon bank","Select ABK file")
  191.       If F$<>""
  192.          Save F$,2
  193.       End If 
  194.    End If 
  195. End Proc
  196. '
  197. Procedure ICON_GRAB
  198.    If FILE_LOADED
  199.       If ICON_START_X<>-1
  200.          If(ICON_START_X<>ICON_END_X) and(ICON_START_Y<>ICON_END_Y)
  201.             Screen 1
  202.             Get Icon 1,ICON_EDIT,ICON_START_X,ICON_START_Y To ICON_END_X,ICON_END_Y
  203.             If ICON_EDIT>ICON_NUMBER and ICON_NUMBER<999
  204.                Inc ICON_NUMBER
  205.             End If 
  206.             If ICON_EDIT<999
  207.                Inc ICON_EDIT
  208.             End If 
  209.             Screen _SCREEN
  210.             T$=Str$(ICON_EDIT)
  211.             T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  212.             T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  213.             Ink 1,0 : Text 52,193,T$
  214.             T$=Str$(ICON_NUMBER)
  215.             T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  216.             T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  217.             Ink 1,0 : Text 83,199,T$
  218.          End If 
  219.       End If 
  220.    End If 
  221. End Proc
  222. '
  223. Procedure ICON_EDIT_INC
  224.    If ICON_EDIT<=ICON_NUMBER
  225.       Inc ICON_EDIT
  226.       T$=Str$(ICON_EDIT)
  227.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  228.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  229.       Ink 1,0 : Text 52,193,T$
  230.    End If 
  231. End Proc
  232. '
  233. Procedure ICON_EDIT_DEC
  234.    If ICON_EDIT>1
  235.       Dec ICON_EDIT
  236.       T$=Str$(ICON_EDIT)
  237.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  238.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  239.       Ink 1,0 : Text 52,193,T$
  240.    End If 
  241. End Proc
  242. '
  243. Procedure HELP
  244.    Screen To Front 3 : Screen 3
  245.    Repeat 
  246.    Until Mouse Click=2
  247.    Screen To Front 4 : Screen 4
  248.    Repeat 
  249.    Until Mouse Click=2
  250.    Screen To Front _SCREEN : Screen _SCREEN
  251. End Proc
  252. '
  253. Procedure QUIT
  254.    Edit 
  255. End Proc
  256. '
  257. Procedure _SPRITE_BANK_ERASE
  258.    Erase 1
  259.    _SPRITE_NUMBER=0
  260.    _SPRITE_EDIT=1
  261.    Ink 1,0 : Text 187,193,"001"
  262.    Ink 1,0 : Text 218,199,"000"
  263. End Proc
  264. '
  265. Procedure _SPRITE_BANK_LOAD
  266.    F$=Fsel$("*.abk","","Load icon bank","Select ABK file")
  267.    If F$<>""
  268.       Load F$,1
  269.       _SPRITE_NUMBER=Length(1) : Rem Get number of icons in bank. 
  270.       _SPRITE_EDIT=_SPRITE_NUMBER+1
  271.       T$=Str$(_SPRITE_EDIT)
  272.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  273.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  274.       Ink 1,0 : Text 187,193,T$
  275.       T$=Str$(_SPRITE_NUMBER)
  276.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  277.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  278.       Ink 1,0 : Text 218,199,T$
  279.    End If 
  280. End Proc
  281. '
  282. Procedure _SPRITE_BANK_SAVE
  283.    If _SPRITE_NUMBER>0
  284.       F$=Fsel$("*.abk","","Save icon bank","Select ABK file")
  285.       If F$<>""
  286.          Save F$,1
  287.       End If 
  288.    End If 
  289. End Proc
  290. '
  291. Procedure _SPRITE_GRAB
  292.    If FILE_LOADED
  293.       If ICON_START_X<>-1
  294.          If(ICON_START_X<>ICON_END_X) and(ICON_START_Y<>ICON_END_Y)
  295.             Screen 1
  296.             Get Sprite 1,_SPRITE_EDIT,ICON_START_X,ICON_START_Y To ICON_END_X,ICON_END_Y
  297.             If _SPRITE_EDIT>_SPRITE_NUMBER and _SPRITE_NUMBER<999
  298.                Inc _SPRITE_NUMBER
  299.             End If 
  300.             If _SPRITE_EDIT<999
  301.                Inc _SPRITE_EDIT
  302.             End If 
  303.             Screen _SCREEN
  304.             T$=Str$(_SPRITE_EDIT)
  305.             T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  306.             T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  307.             Ink 1,0 : Text 187,193,T$
  308.             T$=Str$(_SPRITE_NUMBER)
  309.             T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  310.             T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  311.             Ink 1,0 : Text 218,199,T$
  312.          End If 
  313.       End If 
  314.    End If 
  315. End Proc
  316. '
  317. Procedure _SPRITE_EDIT_INC
  318.    If _SPRITE_EDIT<=_SPRITE_NUMBER
  319.       Inc _SPRITE_EDIT
  320.       T$=Str$(_SPRITE_EDIT)
  321.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  322.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  323.       Ink 1,0 : Text 187,193,T$
  324.    End If 
  325. End Proc
  326. '
  327. Procedure _SPRITE_EDIT_DEC
  328.    If _SPRITE_EDIT>1
  329.       Dec _SPRITE_EDIT
  330.       T$=Str$(_SPRITE_EDIT)
  331.       T$=Right$(T$,Len(T$)-1) : Rem Strip off leading space. 
  332.       T$=String$("0",3-Len(T$))+T$ : Rem Add leading 0's. 
  333.       Ink 1,0 : Text 187,193,T$
  334.    End If 
  335. End Proc
  336. '
  337. '
  338. '
  339. '
  340. '
  341. '
  342. '
  343. '
  344. '